3.4 Mise en pratique : les files

Exercice 1
Donner le contenu de la file pour chaque opration de la suite : Q*UES***TI*ON*FAC***IL***E**.
Chaque lettre provoque un enfilement et chaque astrisque un dfilement.

Exercice 2
Dans une gare un guichet est ouvert. Les clients arrivent  des dates alatoires et font la queue. L'intervalle entre l'arrive de deux clients successifs est un nombre alatoire entre 0 et INTERVAL_MAX en secondes ou en minutes. Lorsque le guichetier a fini avec un client, il ap-pelle le client suivant et le traitement a une dure entre 0 et DUREE_TRAITEMENT_MAX.
crire un programme de simulation.

Exercice 3
Pour simuler un croisement routier,  sens unique, on utilise 3 files f1, f2 et f3 reprsentant respectivement les voitures arrivant sur les routes R1 et R2, et les voitures partant sur la route R3. La route R2 a un STOP, les voitures de la file f2 ne peuvent avancer que sil ny a au-cune voiture sur la route R1, donc dans la file f1.
 
Lalgorithme de simulation utilisera une boucle sans fin.
 chaque itration, il sera fait un appel  la procdure arrive(f1, f2) qui simule larrive dune ou plusieurs voitures des files f1 et f2, modifiant ainsi leur tat en mmoire.
		Si l'on considre que les files sont infinies, quelle structure de donnes choisir ?
		Admettons que les files ne sont pas infinies. La taille de nos files est limite  une variable MAX saisie par lutilisateur et symbolisant le maximum de voitures que peut accueillir une route et la procdure arrive(f1, f2) prend en compte cette nouvelle hypothse.
Programmer une simulation.
Nous ajoutons maintenant une nouvelle hypothse  notre problme : le STOP est respect mais la voiture de la route R2 peut tre prioritaire par rapport  la route R1. C'est--dire que si la distance entre la premire voiture de la route R1 et le croisement est juge suffisante par votre simulateur, on prfrera dfiler f2 plutt que f1. La vitesse des voitures est juge cons-tante.
Modifier le programme prcdent en ajoutant cette prcision.

Exercice 4
Le but de cet exercice est d'crire un programme qui simule le droulement d'une partie du jeu de la bataille.
Rappel des rgles :
		On dispose d'un jeu de 32 cartes (4 couleurs et 8 puissances de carte).
		Chaque carte possde une couleur (COEUR, CARREAU, TREFLE ou PIQUE) et une puissance (SEPT, HUIT, NEUF, DIX, VALET, DAME, ROI ou AS). On utilisera les codes ASCII 3, 4, 5 et 6 pour reprsenter les symboles  ,  ,  ,  . Par exemple, la dame de cur sera affiche D .
Le jeu est d'abord mlang alatoirement pour ensuite tre coup en deux tas de 16 cartes. On en donne un  chaque joueur. La partie peut enfin commencer. Chaque joueur montre la carte au sommet de son tas. Le joueur qui a la carte de plus forte valeur ramasse sa carte et celle de son adversaire et les met sous son tas. En cas d'galit, les deux cartes sont places sur un tas d'attente avec, pour chaque joueur, une autre carte prise au sommet de son tas. Ensuite, la partie reprend. Le joueur qui remportera la manche suivante remportera non seulement les deux cartes en jeu mais galement toutes celles qui se trouvent dans le tas d'attente.
Le perdant sera le joueur qui na plus de carte dans son tas et le vainqueur celui qui ralise le meilleur score  la fin de la partie.
Dfinir des structures de donnes adaptes pour une carte, un tas de cartes et un jeu de cartes.
Dfinir les joueurs. Commencer avec deux joueurs.
Quelles sont les actions  effectuer et dans quel ordre ?
Soigner l'affichage du droulement de la partie.
Ensuite gnraliser pour une partie de bataille entre nb joueurs avec un jeu de cartes imagi-naire de nb cartes avec nb couleurs.

Exercice 5
crire un programme qui transforme une expression infixe (avec parenthses) en nota-tion postfixe (polonaise inverse). L'expression suivante :
3*(((12-3)/3)-1)
devra tre traduite en :
3 12 3  3 / 1 - *
Les oprateurs valides sont : +, -, *, /. L'algorithme lit une suite de caractres et range le rsul-tat de la conversion dans une file qui est affiche  la fin.
